package DAO.ImpJDBC;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import DAO.Util.ConnectionFactory;
import DAO.UsuarioDAO;
import DAO.model.Usuario;

public class UsuarioDaoJDBC implements UsuarioDAO{

	
	public boolean cadastraUsuario(Usuario usuario) {
		int added = 0;
		Connection con = null;
		try {
			con = ConnectionFactory.getConnection();
			if (con != null) {
				String sql = "INSERT INTO usuarios (nome, nascimento, login, senha) VALUES (?, ?, ?, ?)";
				PreparedStatement ps = con.prepareStatement(sql);
				ps.setString(1, usuario.getNome());
				ps.setDate(2, new Date(usuario.getNascimento().getTime()));
				ps.setString(3, usuario.getLogin());
				ps.setString(4, usuario.getSenha());
				added = ps.executeUpdate();
				ps.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		return added > 0;
	}

	public Usuario getUsuarioByLoginSenha(Usuario usuario) {
		Connection con = null;
		try {
			con = ConnectionFactory.getConnection();
			if (con != null) {
				String sql = "SELECT * FROM usuarios WHERE login =  ? AND senha = ?";
				PreparedStatement st = con.prepareStatement(sql);
				st.setString(1, usuario.getLogin());
				st.setString(2, usuario.getSenha());
				ResultSet rs = st.executeQuery();
				if (rs.next()) {
					usuario.setNome(rs.getString("nome"));
					usuario.setNascimento(rs.getDate("nascimento"));
					usuario.setLogin(rs.getString("login"));
					usuario.setSenha(rs.getString("senha"));
				}
				rs.close();
				st.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return usuario;
	}

	public List<Usuario> listarUsuarios() {
		Connection con = null;
		List<Usuario> usuarios = new ArrayList<Usuario>();
		try {
			con = ConnectionFactory.getConnection();
			if (con != null) {
				String sql = "SELECT * FROM usuarios";
				PreparedStatement st = con.prepareStatement(sql);
				ResultSet rs = st.executeQuery();
				while (rs.next()) {
					Usuario usuario = new Usuario();
					usuario.setNome(rs.getString("nome"));
					usuario.setNascimento(rs.getDate("nascimento"));
					usuario.setLogin(rs.getString("login"));
					usuario.setSenha(rs.getString("senha"));
					System.out.println(usuario);
					usuarios.add(usuario);
				}
				rs.close();
				st.close();
			}else{
				return usuarios;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return usuarios;
	}
}
